#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/wait.h>

#define MAX_INPUT 1024

int main() {
    char input[MAX_INPUT];
    
    while (1) {
        // 1. 显示提示符
        printf("myshell> ");
        fflush(stdout);
        
        // 2. 读取用户输入
        if (fgets(input, MAX_INPUT, stdin) == NULL) {
            break;  // Ctrl+D 退出
        }
        
        // 去除换行符
        input[strcspn(input, "\n")] = '\0';
        
        // 跳过空输入
        if (strlen(input) == 0) {
            continue;
        }
        
        // 3. 解析命令（这里简化处理）
        char *args[] = {input, NULL};
        
        // 4. 创建子进程
        pid_t pid = fork();
        
        if (pid == 0) {
            // 子进程：执行命令
            execvp(args[0], args);
            
            // 如果execvp返回，说明执行失败
            perror("execvp failed");
            exit(1);
            
        } else if (pid > 0) {
            // 父进程：等待子进程结束
            int status;
            waitpid(pid, &status, 0);
            
            if (WIFEXITED(status)) {
                printf("Command exited with code: %d\n", WEXITSTATUS(status));
            }
            
        } else {
            // fork失败
            perror("fork failed");
        }
    }
    
    return 0;
}
